查看原文
其他

《深入理解Linux远程过程调用(RPC)》在线视频课程

小月 Linux阅码场 2022-12-14

课程简介

现实中的很多项目都会涉及到远程过程调用(RPC)的问题,这些RPC也许跨进程,也许跨物理主机。如何灵活高效地实现RPC,是很多项目都会面临的挑战。

1. 本课程首先通过对远程过程调用一般性原理的解释和基本框架的介绍,使大家理解RPC的整体结构和主要流程。

2. 之后会对RPC发展过程中的部分重要方案进行介绍,包括Linux RPC、Corba、Web services、D-Bus等,使大家了解这些不同方案的设计思想、主要特点和适用范围,在不同的项目中能够根据需求进行合理抉择。

3. 接着,会将Android Binder作为典型案例进行解剖,对其整体架构、运作机制等进行全面、深入、详尽的学习,使大家深入了解其实现细节。在牢固掌握其实现的基础上,可以对类似技术做到触类旁通,快速掌握。

4. 最后,设计了一组Linux RPC、D-Bus、Binder、Web services的练习题来进行实战。

课程共4节课,全长约4小时,课程已全部上线,无需等候


上课形式:


  • 视频课程(可无限次数回看)

  • 课后实战,练习和解答(在自己的电脑上进行实际操作)

  • 加入课程讨论答疑群。

老师简介

曾昭毅:武汉理工大学计算机应用技术硕士毕业

曾在群硕软件、深圳仙苗科技有限公司担任软件开发经理、软件研发总监等职,是在实战中成长起来的从单板嵌入式到大型企业级应用系统集成的全栈式工程师。

具有丰富的Arm体系Linux及Android系统移植经验,对基于I2C、SPI、USB、AC97、I2S、SDIO/EMMC、UART等总线的各种设备如LCD、触摸屏、3G/4G模块、Wifi、GPS、摄像头、HDMI、CODEC等驱动移植有深厚的掌握。

远程过程调用


  • 什么是RPC

  • 什么是IPC

  • 本课程RPC的定义——跨进程过程调用

  • Linux RPC实例

  • RPC整体架构

  • RPC各组成部分功能及运作原理

    • IDL/Interface

    • Client/Server

    • Proxy/Stub

    • Server register

    • 其他

部分远程过程调用方案 


  • RPC模式

    • 支持语言

    • 主要结构

    • 关键特性

    • ONC RPC

    • Corba

    • EJB

    • Web service

    • Dubbo

    • Json-RPC


  • IPC模式

    • Android Binder

    • D-Bus

  • 各方案主要特性对比

实例分析——Android Binder详解


  • Binder主要特点

  • 整体结构

  • Native层(C++/C)

    • Service注册

    • 隐含ServiceManager接口获取过程

    • ServiceManager启动流程

    • App/Zygote启动时Binder相关初始化

    • ServiceManager类结构

    • 掌控全局的IInterface.h

    • 关键类结构

    • 系统启动准备工作

    • Binder调用流程

  • Native层(C++/C)

    • Service注册流程

    • Service接口获取流程

    • Service调用过程

    • Binder调用流程(续前)

    • Binder线程管理

    • Binder一次数据拷贝机制

  • Java层

    • 关键类结构

    • Java service获取流程 - ServiceManager

    • Service注册流程

    • Java service获取流程 - ActivityManager

  • AIDL

实验、练习和解答


  1. 用Linux RPC实现加法和greet函数,greet函数接收一个字符串格式的名字如“Mike”,返回字符串“Hello Mike”。(提示:Linux RPC只支持单参数,传递多参数可利用struct实现)

  2. a. 用D-Bus实现加法和greet函数;b. 参照Linux RPC格式,根据自己对RPC机制的理解,手动实现对2.a.中所完成接口的RPC封装。

  3. 利用WebService实现上述加法和greet函数。

  4. 分析Binder在进程间通过一次拷贝机制传递数据时,发送方是否需要将待发送数据放入自己与binder驱动进行mmap的内存区域?放与不放有什么影响?

  5. 创建一个Android应用,利用AIDL生成对应的Java类,画出生成类的类图。


报名方法

点击左下角“阅读原文”试听与报名!!!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存